/**
 * OrderApi.java
 * @author taowei20061122@163.com
 * 2013-6-14 下午4:18:09
 */
package study.designpattern.prototype;

/**
 * 订单的接口，声明可以克隆自身的方法
 * 
 * 场景问题：订单处理系统，根据业务，目前的订单分个人订单和企业订单两种。问题抽象：已经有了某个对象
 *     的实例后，如何能够快速简单地创建出更多的这种对象？
 * 解决方案：原型模式：用原型实例指定创建对象的种类，并通过拷贝这些原型创建新的对象。
 * 
 * 原型模式的本质：克隆生成对象
 * 何时选用原型模式：
 *     1.如果一个系统想要独立于它想要使用的对象时，可以使用原型模式，让系统只面向接口编程，在系统需
 * 要新的对象时，可以通过克隆原型得到；
 *     2.如果需要实例化的类是在运行时刻动态指定时，可以使用原型模式，通过克隆原型来得到需要的实例；
 * 
 * @author taowei20061122@163.com
 * 2013-6-14 下午4:18:09
 */
public interface OrderApi {
	public int getOrderProductNum();
	public void setOrderProductNum(int num);
	/**
	 * 克隆方法
	 * @return 订单原型的实例
	 */
	public OrderApi cloneOrder();
}
